/**
 * @Description: 定义常量
 * @Author 卞鹏飞 <228443632@qq.com>
 * @create 29/08/24 PM1:54
 */

import profile from '@root/profile.ts'
// import type { AxiosRequestConfig } from 'axios'

const { cf } = profile.proxy

/**
 * 登录信息相关
 * @type {string}
 */
export const X_USER_TOKEN = 'x-user-token' // 请求头token

/**
 * 权限code
 * @type {string}
 */
export const X_REAL_PERMISSION_CODE = 'x-real-permission-code' // 权限code

/**
 * 来源
 * @type {string}
 */
export const MENU_ADDRESS = 'menu-address'

/**
 * 菜单名称
 * @type {string}
 */
export const MENU_NAME = 'menu-name'

/**
 * 服务器类型：（10:资管 20：处置）
 * @type {string}
 */
export const SERVER_TYPE = 'server-type'

/**
 * 公网地址
 */
export const REAL_IP = 'real-ip'

/**
 * 接口权限映射
 * @example
 * 1、页面+接口地址
 * 如果指定某一个页面的接口，格式 地址路径|接口地址 value 为接口权限码, 默认优先级高
 *  '/project/approval/detail|/api/lawsuit/effect-time/lawsuit-page': 'ls:effect:tab:lawsuit:ugre'
 *
 * 2、接口地址，优先级低
 * '/api/lawsuit/effect-time/lawsuit-page', 'ls:effect:tab:lawsuit:ugre'
 *
 */
export const REAL_PERMISSION_CODE_MAP: Map<string | RegExp, string> = new Map([
  ['/api/lawsuit/effect-time/lawsuit-page', 'ls:effect:tab:lawsuit:ugre'],
  [cf.prefix + '/manageAssetAccount/assetAccountExport', 'assetAccount:householdExport'],
  [cf.prefix + '/manageAssetAccount/assetAccountCaseExport', 'assetAccount:caseExport']
])

/**
 * 接口地址 过期时间
 * @example
 */
export const API_TIMEOUT_MAP: Map<string, number> = new Map([
  // 30 分钟
  [cf.prefix + '/repaymentDetailManage/repayNoImport', 30 * 60 * 1000]
])

/**
 * 用户token过期code 枚举
 */
export const USER_TOKEN_EXPIRED_CODE = {
  410: 1, // 登录信息过期
  3001: 1, // 用户未登录
  3002: 1, // 登录已过期，请重新登录
  3003: 1, // 该账号在其他地方登录，您已被迫下线
  3005: 1, // 账号已过期
  3006: 1, // 用户已被锁定
  3007: 1, // 员工信息变更，请重新登录
  3015: 1 // 账号已被停用/删除，请联系管理员
}

/**
 * 菜单微应用映射 转化
 */
export const MENU_MICRO_PATH_ENTRIES = [
  ['/cf-manage/#', ''],
  ['/auth-v2/#', '/micro-auth'],
  ['/micro-workflow/#', '/micro-view/workflow']
]

/**
 * 平台类型
 */
export const QIANKUN_PLATFORM = {
  BASE: 'base', // 法诉平台
  TZX: 'hub' // 特自行平台
} as const
